Namespace.Use("UI.Object", function(ns) {
    //  Imports.
    var Inherit = Namespace.Import("Base.Inherit");

    function BaseContainer() {
        //  Let parent class initialize.
        ns.BaseObject.call(this);

        //
        //  Public methods.
        //
        this.QueryChildren = function() {
            throw "QueryChildren() should be overrided.";
        };
        this.HasChild = function() {
            throw "HasChild() should be overrided.";
        };
        this.AddChild = function() {
            throw "AddChild() should be overrided.";
        };
        this.RemoveChild = function() {
            throw "RemoveChild() should be overrided.";
        };
    }

    //  Inherit "BaseContainer" from "BaseObject".
    Inherit(BaseContainer, ns.BaseObject);

    //  Export public APIs / classes.
    Namespace.Export(ns, "BaseContainer", BaseContainer);
});